/**
 * 
 */
package com.cr.backbone.ajax;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Locale;

import com.cr.backbone.util.UtilsDataDictI18n;
import com.cr.backbone.util.UtilsMethodReflectingValues;
/**
 * @project RaedNote
 * @version 1.0
 * @company 
 * @fileDescribe
 * @fileType UtilsOptionsInit UtilsOptionsInit.java
 * @author xianghua.hu
 * @date 2012-6-4 下午06:24:18
 */
/**
 * @author huxh
 *
 */
public class UtilsOptionsInit {
	
	private static final String EMPTY = "            ";

	/**
	 * 根据数据集合对象属性名称textKey,valueKey 返回数据集合
	 * 反射：object属性
	 * @methodDescribe
	 * @param values
	 * @param textKey
	 * @param valueKey
	 * @return
	 * @author xianghua.hu
	 * @date 2012-6-4
	 */
	public static Collection<AjaxSelectOption> initCollectionByObject(Collection<Object> values ,String textKey,String valueKey){
		
		//1 初始化 空选项集合
		Collection<AjaxSelectOption>  options = initEmptyCollectionOptions();
		
		//2 反射属性，赋值
		for (Object obj : values) {
			AjaxSelectOption op = new AjaxSelectOption();
			String valueMethodName=valueKey;
			String textMethodName=textKey;
			// 反射属性取值。
			// 根据 get Method获取属性值
			String value = String.valueOf(UtilsMethodReflectingValues.getValue(obj, valueMethodName));
			String text = String.valueOf(UtilsMethodReflectingValues.getValue(obj, textMethodName));
			op.setText(text);
			op.setValue(value);
			options.add(op);
		}
		return options;
	}
	
	
	/**
	 * 根据数据集合对象属性名称textKey,valueKey 返回数据集合
	 * 动态国际化资源
	 * @methodDescribe
	 * @param values
	 * @param textKey
	 * @param valueKey
	 * @return
	 * @author huxh
	 * @date 2012-6-4
	 */
	public static Collection<AjaxSelectOption> initCollectionByDataDict(Collection<Integer> values){
		//1 初始化 空选项集合
		Collection<AjaxSelectOption>  options = initEmptyCollectionOptions();
		
		//2 动态数据字典国际化资源，赋值
		for (Object obj : values) {
			AjaxSelectOption op = new AjaxSelectOption();
			
			String key = String.valueOf(obj);
			
			String value = String.valueOf(key);
			String text = String.valueOf(UtilsDataDictI18n.getI18nString(key));//获取key对应国际化资源
			op.setValue(value);
			op.setText(text);
			options.add(op);
		}
		return options;
	}
	
	/**
	 * 初始化
	 * @return
	 * @author huxh
	 * @date 2012-6-5
	 */
	public static Collection<AjaxSelectOption> initEmptyCollectionOptions() {
		Collection<AjaxSelectOption>  options = new ArrayList<AjaxSelectOption>();
		options.add(new AjaxSelectOption("",EMPTY));//空选项
		return options;
	}
	
}
 